define (require, exports, module) ->
  # Vue全局声明使用路由插件
  Vue.use VueRouter
  # Vue全局声明使用Promise异步请求
  Vue.use VueResource
  # Vue全局声明使用Vuex状态共享插件
  Vue.use Vuex
  # 打开调试面板
  Vue.config.devtools = true

  # 滚动行为处理，对于所有路由导航，简单地让页面滚动到顶部
  scrollBehavior = (to, from, savedPosition) ->
    if savedPosition
      # savedPosition 当且仅当浏览器前进/后退按钮触发时才可用
      return savedPosition
    else
      position = {}
      # 通过选择器，滚动到指定锚点
      if to.hash
        position.selector = to.hash
      # 检查是否有meta标签需要滚动到顶部
      if to.matched.some(((m) ->
          m.meta.scrollToTop
        ))
        # 如果选择器获取不到值，则默认返回原点
        position.x = 0
        position.y = 0
      # 返回的位置对象不可用或为空，则返回当前值
      return position

  # 创建一个路由实例
  router = new VueRouter
    base: '/'
    routes: require 'mods/routes'
    scrollBehavior: scrollBehavior

# <transition name="fade">
# </transition>
  # 根实例模板
  tplStr = """
            <div class="container" id="deviceready" v-cloak="v-cloak">
              <c-header></c-header>
              <router-view></router-view>
              <c-footer></c-footer>
            </div>
           """
  # 创建一个Vue实例，并挂载到deviceready元素
  new Vue
    router: router
    template: tplStr
    components:
      'c-header': require 'mods/header/header_mod'
      'c-footer': require 'mods/footer/footer_mod'
  .$mount '#deviceready'